function loadTree(tree) {

    var jstree_container = '#jstree_demo_div';
    //var id;
    $(document).ready(function () {
        $(jstree_container).jstree({

            'core': {
                'data': tree,
                'themes': {
                    'dots': true,
                    'responsive': true
                },
                //当用户修改数时,允许所有的交互和更好的控制(例如增删改)
                /*
                https://github.com/vikyd/jsTree-doc/blob/master/api-core.md
                false，所有操作（创建 create、重命名 rename、删除 delete、移动 move、复制 copy）都将被阻止。
                true，所有操作都被允许。
                函数，更详细的逻辑控制。

                operation：这个是看我们右键选择了什么功能。是删除，添加，移动，修改等。
                node：表示当前对象的值，里面保存有这个节点里面的一些属性。
                parent：表示父类节点对象。
                position：表示当前节点的text值。比如我们上图的123就是在后台打印了position的原因。
                more：这个现在打印不出来，也不清楚干什么用的。

                *
                *   //Will do a ajax call to refresh the tree
                     $.jstree._reference($("#demo1")).refresh(-1);
                * */
                "check_callback": function (operation, node, parent, position, more) {

                    //delete_node
                    //copy_node
                    //move_node
                    var node = this.get_node(parent);
                    if (operation === "delete_node" || operation === "move_node") {
                        if (node.state.disabled) {
                            alert("禁用的不可以删除");
                            return false;
                        }

                        if (node.id === "#") {
                            alert("根结点不可以删除/移动");
                            return false;
                        }

                    } else if (operation === "delete_node") {
                    }

                    return true;
                }
            },

            "search": {
                "case_insensitive": true,
                "show_only_matches": true
            },

            "plugins": [
                "search",// 允许插件搜索
                "state",// 状态插件
                "dnd",  // 拖拽
                "types",//类型插件
                //  "contextmenu", //右键菜单
                "changed"//

            ],

            "types": {
                "root": { //设置默认的 icon : 根节点
                    "icon": "/static/3.0.8/assets/images/tree_icon.png",
                    "valid_children": ["default"]
                },

                "default": { //设置默认的 icon : 非叶节点
                    "icon": "fa fa-folde",
                },

                "child": {
                    "icon": "fa fa-leaf"
                },

                "file": { //设置默认的 icon : 叶子节点
                    "icon": "fa fa-file",
                    "valid_children": ["default"]
                }
            } // activate the state plugin on this instance


        });


        //search plugin
        $('#search').keyup(function () {
            //alert("Handler for .keyup() called.");
            $(jstree_container).jstree('search', $(this).val());
        });


        //监听发生变化事件
        $(jstree_container).on("changed.jstree", function (e, data) {
            // console.log("changed.jstree event");
            // console.log(data.changed.selected); // newly selected
            // console.log(data.changed.deselected); // newly deselected
        });

        //监听打开事件,修改图标
        $(jstree_container).on("open_node.jstree", function (e, data) {
            //console.log(data);
            var currentNode = data.node;
            data.instance.set_icon(currentNode, "fa fa-folder-open");
        });

        //监听关闭事件,修改图标
        $(jstree_container).on("close_node.jstree", function (e, data) {
            var currentNode = data.node;
            data.instance.set_icon(currentNode, "fa fa-folder");
        });

        //监听选择事件
        $(jstree_container).on("select_node.jstree", function (e, data) {   // jstree 事件 event
            // console.log(e);
            //console.log(data);
            $('#content').text(data.node.text);
            var href = data.node.a_attr.href;
            var parentId = data.node.a_attr.parent_id;
            if (href == '#')
                return '';
            // window.open(href);
        });


        // 创建节点
        $(jstree_container).on("create_node.jstree", function (e, data) {
            $('#content').text('创建节点');
        });

        // 重命名节点
        $(jstree_container).on("rename_node.jstree", function (e, data) {
            $('#content').text('重命名节点');
        });

        // 删除 节点
        $(jstree_container).on("delete_node.jstree", function (e, data) {
            $('#content').text('删除节点');
        });

        // drag and move
        $(jstree_container).on("move_node.jstree", function (e, data) {
            console.log("move_node.jstree event");
            //console.log(data);
            var old_parent = data.old_parent; //被移动的节点 : 原父节点 id
            var old_position = data.old_position; //被移动的节点 : 原位置 , 位置从 0 开始
            var parent = data.parent; //被移动的节点 : 现在的父节点
            var position = data.position; //被移动的节点 : 现在的位置 , 位置从 0 开始
            console.log("移动节点,父节点 id 变化 ： " + old_parent + " -> " + parent);
            console.log("移动节点,位置变化 ： " + old_position + " -> " + position);
            // console.log(nodeType);
            // console.log(parentType);

            // if (nodeType && parentType) {
            // TODO!
            // }
        });

        // 拷贝 节点
        $(jstree_container).on("copy_node.jstree", function (e, data) {
        });


        /*
     $('#jstree_demo_div').on("changed.jstree", function (e, data) {
         var i, j, r = [];
         for (i = 0, j = data.selected.length; i < j; i++) {
             r.push(data.instance.get_node(data.selected[i]).text);
         }

         $('#event_result').html('Selected: ' + r.join(', '));

         console.log(data.instance.get_selected(true)[0].text);
         console.log(data.instance.get_node(data.selected[0]).text);
     }).jstree(); */
    });

    function demo_open_all() {
        $(jstree_container).jstree("open_all");
    };

    function demo_close_all() {
        $(jstree_container).jstree("close_all");
    };

    /*得到被点击的元素的 id
    $('body').click(function (event) {
        id = event.target.id;
        console.log(id + " is click");
    });*/

    //create button
    //父节点下可以创建节点
    function demo_create_parent() {
        var ref = $(jstree_container).jstree(true),
            sel = ref.get_selected();
        if (!sel.length) {
            return false;
        }
        sel = sel[0];
        sel = ref.create_node(sel, {"type": "folder"});
        if (sel) {
            ref.edit(sel);
        }
    };

    //叶节点下不能创建节点
    function demo_create_child() {
        var ref = $(jstree_container).jstree(true),
            sel = ref.get_selected();
        if (!sel.length) {
            return false;
        }
        sel = sel[0];
        sel = ref.create_node(sel, {"type": "file"});
        if (sel) {
            ref.edit(sel);
        }
    };

    //rename button
    function demo_rename() {
        var ref = $(jstree_container).jstree(true),
            sel = ref.get_selected();
        if (!sel.length) {
            return false;
        }
        sel = sel[0];
        ref.edit(sel);
    };

    //delete button

    /*
    * var currentNode = treeElem.jstree('get_node', node, true);
if (currentNode.hasClass("folder")) {
    // Delete the "delete" menu item
    delete items.deleteItem;
}
    *
    * */

    function demo_delete() {
        var ref = $(jstree_container).jstree(true),
            sel = ref.get_selected();
        if (!sel.length) {
            return false;
        }
        ref.delete_node(sel);
    };

    function demo_copy() {
        $('#content').text('demo_copy method');
        var ref = $(jstree_container).jstree(true),
            sel = ref.get_selected();
        if (!sel.length) {
            return false;
        }
        ref.copy(sel);


    };

    function demo_cut() {
        $('#content').text('demo_cut method');
        var ref = $(jstree_container).jstree(true),
            sel = ref.get_selected();
        if (!sel.length) {
            return false;
        }
        ref.cut(sel);
    };

    function demo_paste() {
        $('#content').text('demo_paste method');
        var ref = $(jstree_container).jstree(true),
            sel = ref.get_selected();
        if (!sel.length) {
            return false;
        }
        ref.paste(sel);
        //粘帖之后打开该节点
        $(jstree_container).jstree("open_node", sel);
    };
}
